﻿using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Text;
using Newtonsoft.Json;

namespace MemoryDuosControl
{
    public class Anuncio
    {
        public int IDAnuncio { get; set; }

        public long EmpresaCIF { get; set; }

        [JsonIgnore]
        public Image Banner { get; set; }

        public DateTime? FechaInicio { get; set; }

        public DateTime? FechaFin { get; set; }

        public Double Precio { get; set; }
    }

    public static class AccesoAnuncio
    {
        public static void RegistrarAnuncio(Anuncio anuncio, string ruta)
        {
            string address = Conexion.UrlPruebas + String.Format("anuncios.php?FechaInicio={0}&FechaFin={1}&Precio={2}&Empresa_CIF={3}", anuncio.FechaInicio.HasValue ? anuncio.FechaInicio.Value.ToString("yyyy-MM-dd HH:mm:ss") : null, anuncio.FechaFin.HasValue ? anuncio.FechaFin.Value.ToString("yyyy-MM-dd HH:mm:ss") : null, anuncio.Precio, anuncio.EmpresaCIF);
            String text;
            byte[] arrByte;
            String json = JsonConvert.SerializeObject(anuncio);
            int id;
            using (var cliente = new CookieAwareWebClient())
            {
                arrByte = cliente.UploadFile(address, ruta);
                text = System.Text.Encoding.Default.GetString(arrByte);
            }
        }

        public static void ModificarAnuncio(Anuncio anuncio, int id)
        {
        }

        public static EstadoPeticion EliminarAnuncio(int idAnuncio)
        {
            string address = Conexion.UrlPruebas + String.Format("anuncios.php?eliminar={0}", idAnuncio);
            String text;
            using (var cliente = new CookieAwareWebClient())
            {
                text = cliente.DownloadString(address);
            }
            try
            {
                return JsonConvert.DeserializeObject<EstadoPeticion>(text);
            }
            catch (Exception exc)
            {
                throw new Exception("Error al eliminar anuncio " + exc.Message, exc);
            }
        }

        public static List<Anuncio> ObtenerAnuncios()
        {
            string address = Conexion.UrlPruebas + "anuncios.php";
            String text;

            using (var webClient = new CookieAwareWebClient())
            {
                text = webClient.DownloadString(address);
            }
            try
            {
                return JsonConvert.DeserializeObject<List<Anuncio>>(text);
            }
            catch (JsonReaderException exc)
            {
                throw new Exception("Hubo un error al obtener los anuncios: " + text, exc);
            }
        }
    }
}
